An early version of this program goes back to 1987. It included a basic set of 3D graphics routines plus some routines for viewing and rotating three-dimensional objects. A little later Hermann Karcher visited me from Bonn and we worked hard together on the program, making many improvements. In particular, Hermann showed me what a wonderful tool the Painter's Algorithm is---I know of no better method for getting intimately familiar with the anatomy of a complicated surface in space than seeing it built up in stages from several different viewpoints. Hermann's wife Traudel is a physicist, and suggested the addition of the magnetic field examples for the second order, three-dimensional ODE category.
[By the way, experienced graphics programmers often point out that by drawing directly to the screen I am breaking one of the cardinal rules of graphics programming. (Thou shalt always draw to an offscreen bitmap and then copy it to the screen). One reason is that in most graphics applications the user doesn't want to see a partially drawn object, only the final result. But as explained , above I WANT the user to see a surface being built up by the Painter's Algorithm (and the timing information inherent in seeing an ODE orbit being drawn in real-time). So I do just the opposite---I draw first to the screen and then copy the screen to an offscreen bitmap that is used both for screen updating and perhaps as a frame of a filmstrip.]
In August of 1995 Hermann visited me again, and the two of us spent a couple of weeks working hard to program the Weierstrass-Enneper technique for defining minimal surfaces into 3D-Filmstrip. (I travelled to Bonn for a week the next December to return the visit and finish the job.) Karcher is one of a small group of experts in this field, and I feel very fortunate and grateful to have had this opportunity to learn his remarkably elegant and efficient numerical methods for carrying out the integrations and analytic continuations required to implement the Weierstrass-Enneper method. Many of the famous and beautiful minimal surfaces from the last century (those of Scherk, Riemann, Enneper, Schwarz) as well as the new ones discovered in the past decade by Chen-Gackstatter, Costa, Hoffman, Karcher, Meeks, Rosenberg, Wei and several others, can best be exhibited by this method. In fact, for most of these, the Weierstrass integrals cannot be found in closed form, so that numerical quadrature is essential.
It is not widely appreciated that a major problem in constructing "good" graphical representations for these surfaces---i.e., ones that suggest the correct behaviour of the surface outside of the picture, or in more mathematical terms a parametrization adapted to the ends of the minimal surface---is choosing in each case an appropriate grid along which to evaluate the Weierstrass integral. This involves starting with an equi-spaced rectangular grid, deforming the spacing so that more lines will be displayed "where interesting things are going on", and then mapping this grid conformally (often with an algebraic function that is computed by analytic continuation).
This finally produces the grid along which the complex integrals must be evaluated to map the grid as parameter lines onto the minimal surface in three-space. But even then one is not finished! Because of various singularities and branch points (caused by the fact that one is really integrating on a topologically non-trivial Riemann surface rather than on a simply-connected domain) one cannot display the entire surface this way, and one must first use this technique to create a "tile" or "fundamental domain" of the surface, and then create the entire surface by applying a sequence of reflections and rotations to this tile.
Carrying out each of the above steps requires an intimate and detailed knowledge of the conformal properties and symmetries of these remarkable geometric objects, and I particularly appreciate Hermann's willingness to contribute freely from his vast store of knowledge on these matters, much of which he discovered himself.
After Hermann's initial visit, I thought a lot about how to improve the program, but did not work on it for many years. Then, in mid-1993, David Eck showed me his remarkable Macintosh program shell, xWindows. It made programming in Think Object Pascal so easy and enjoyable that I was quickly able to implement all of the features I had been thinking about for so long. The "User Defined..." feature of the program is based on a powerful and speedy expression parser and evaluator, also developed by Eck. Indeed, when I needed a complex expression evaluator for the Conformal Map category, David took time out from his own work, to modify his real evaluator so it would handle complex expressions instead. I think it is fair to say that this program simply could not have been written without David's software contributions.
Alfred Gray was kind enough to send me a pre-publication version of his excellent book, "Modern Differential Geometry of Curves and Surfaces" (CRC Press 1993). Having available his Mathematica code for so many beautiful curves and surfaces greatly simplified the chore of choosing and programming interesting examples for this program.
I have incorporated Ramon M. Felciano excellent "Mercutio" MDEF, to permit the use of option-command menu-key equivalents.
My good friend Chandler Fulton, from the world of biology, was an early beta-tester of this program, and suggested that it might be possible to use it to make a 3D model of the DNA double-helix skeleton to help better visualise it. I thought about it a little and he was right, so "Double Helix" appears in the Surfaces menu. Chan supplied me with the appropriate default parameters for real DNA (the ratio of the radius of the helix to the pitch, and the vertical displacement of the two strands). The horizontal lines (ten per complete rotation) represent hydrogen bonds. After selecting it, try choosing Rotate, and then Playback from the Animate menu.
In the summer of 1996, the 3D-Filmstrip user interface got a major facelift. In early July, I was "attacked" by Xah Lee and Mike Epstein---two users who liked the mathematical visualization aspects of the program, but were far from enthusiastic about the UI. At first I fought hard against most of their recommendations, but it soon became clear that even though I have been a Mac user since 1984---when they were not yet even in their teens---they both had a much better feeling than I for what it is that gives a Mac program that special feeling when all of its UI elements are correct and work well together. So they finally won nearly all the arguments, and I implemented most of the changes to the UI that they recommended, with a great deal of help from them both during the reprogramming and testing.
In the summer of 1998, my friend Angel Montesinos Amilibia did some further extensive testing of the program, and not only uncovered several serious bugs, but also made some important criticisms of the program that led me to make further changes to the user interface, improving it considerably in the process I feel. It is also Angel's excellent algorithms (and even his Pascal code) that I use in 3D-Filmstrip to create implicit curves.
In developing the algorithms to truncate a regular polyhedron, I received help and encouragement from Fan Chung, Han Sah, Darko Babic, and Igor Rivin.
The parametrization of the pseudospherical surface corresponding to the "Breather" solution of the Sine-Gordon equation is due to Jochen Denzler.
The highly efficient code for performing fast Fourier transforms was written by my son Bob Palais. It plays a crucial role in many parts of the program.
The very nice rhombohedron tiling game in the Polyhedron Category is the idea of Mihai Ciucu, and he worked with me to implement it.
The interface between 3D-Filmstrip and the ray tracing program POVRay was the idea of Christophe Favergeon Borgialli, and he implemented the conversion program and auxiliary file needed to carry out his idea. My thanks to Christophe.